package org.youyee.game.managers
{
	import org.youyee.game.displayArea.Area;

	/**
	 * 游戏场景区域管理器 
	 * @author youyee
	 * 
	 */	
	public class AreaManager
	{
		private var _area:Vector.<Area>;
		
		public function AreaManager()
		{
			_area = new Vector.<Area>();
		}
		
		/**
		 * 添加一个区域到管理器 
		 * @param area
		 * @return 
		 * 
		 */		
		public function addArea(area:Area):Boolean
		{
			if (!hasArea(area))
			{
				this._area.push(area);
				return true;
			}
			
			return false;
		}
		
		/**
		 * 是否管理器里面存在此区域 
		 * @param area 被检查的区域
		 * @return 
		 * 
		 */		
		private function hasArea(area:Area):Boolean
		{
			if (this._area.indexOf(area) != -1)
			{
				return true;
			}
			
			return false;
		}
		
		/**
		 * 从管理器中移除区域 
		 * @param area 需要被区域
		 * @return 是否被移除
		 * 
		 */		
		public function removeArea(area:Area):Boolean
		{
			var index:int = this._area.indexOf(area);
			
			if (index != -1)
			{
				_area.splice(index, 1);
				return true;
			}
			
			return false;
		}
		
		/**
		 * 通过ID来取得区域 
		 * @param id 区域的ID
		 * @return 
		 * 
		 */		
		public function getAreaById(id:int):Area
		{
			var len:int = _area.length;
			
			for (var i:int=0; i<len; ++i)
			{
				if (_area[i].id == id)
				{
					return _area[i];
				}
			}
			
			return null;
		}
		
		/**
		 * 移除所有的区域 
		 * 
		 */		
		public function removeAllArea():void
		{
			while (_area.length)
			{
				removeArea(_area[0]);
			}
		}
		
		/**
		 * 销毁面积管理器 
		 * 
		 */		
		public function destroy():void
		{
			_area = null;
		}
		
		/**
		 * 获取所有的面积 
		 * @return 
		 * 
		 */		
		public function get areas():Vector.<Area>
		{
			return this._area;
		}
	}
}